home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / nt / sankyo.exe / OEMSETUP.INF < prev    next >
INI File  |  1993-10-18  |  18KB  |  543 lines

  1. ;-----------------------------------------------------------------------
  2. ; OPTION TYPE
  3. ; -----------
  4. ; This identifies the Option type we are dealing with.  The different
  5. ; possible types are:
  6. ;
  7. ; COMPUTER, VIDEO, POINTER, KEYBOARD, LAYOUT, SCSI, TAPE, PRINTER, ...
  8. ;-----------------------------------------------------------------------
  9.  
  10. [Identification]
  11.     OptionType = TAPE
  12.  
  13. ;-----------------------------------------------------------------------
  14. ; LANGUAGES SUPPORTED
  15. ; -------------------
  16. ;
  17. ; The languages supported by the INF, For every language supported
  18. ; we need to have a separate text section for every displayable text
  19. ; section.
  20. ;
  21. ;-----------------------------------------------------------------------
  22.  
  23. [LanguagesSupported]
  24.     ENG
  25.  
  26. ;-----------------------------------------------------------------------
  27. ; OPTION LIST
  28. ; -----------
  29. ; This section lists the Option key names.  These keys are locale
  30. ; independent and used to represent the option in a locale independent
  31. ; manner.
  32. ;
  33. ;-----------------------------------------------------------------------
  34.  
  35. [Options]
  36.     OEMTAPE   = sankqic
  37.  
  38. ;-----------------------------------------------------------------------
  39. ; OPTION TEXT SECTION
  40. ; -------------------
  41. ; These are text strings used to identify the option to the user.  There
  42. ; are separate sections for each language supported.  The format of the
  43. ; section name is "OptionsText" concatenated with the Language represented
  44. ; by the section.
  45. ;
  46. ;-----------------------------------------------------------------------
  47.  
  48. [OptionsTextENG]
  49.     OEMTAPE   = "Sankyo QIC tape drive"
  50.  
  51. ;-----------------------------------------------------------------------------------------
  52. ; TAPE CLASS DRIVERS:
  53. ;
  54. ; Order of the information:
  55. ;
  56. ; Class driver = Type, Group, ErrorControl, Dependencies, EventMessageFile, TypesSupported
  57. ;
  58. ; NOTE: \ in the dependency list means that the dependency is on a group.
  59. ;-----------------------------------------------------------------------------------------
  60.  
  61. [ClassDrivers]
  62.     sankqic   = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\sankqic.sys"   , 7
  63.  
  64.  
  65. ;---------------------------------------------------------------------------
  66. ; 1. Identify
  67. ;
  68. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  69. ;                as we are choosing currently.
  70. ;
  71. ; INPUT:         None
  72. ;
  73. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  74. ;                $($R1): Option Type (COMPUTER ...)
  75. ;                $($R2): Diskette description
  76. ;---------------------------------------------------------------------------
  77.  
  78. [Identify]
  79.     ;
  80.     ;
  81.     read-syms Identification
  82.  
  83.     set Status     = STATUS_SUCCESSFUL
  84.     set Identifier = $(OptionType)
  85.     set Media      = #("Source Media Descriptions", 1, 1)
  86.  
  87.     Return $(Status) $(Identifier) $(Media)
  88.  
  89.  
  90.  
  91. ;------------------------------------------------------------------------
  92. ; 2. ReturnOptions:
  93. ;
  94. ; DESCRIPTION:   To return the option list supported by this INF and the
  95. ;                localised text list representing the options.
  96. ;
  97. ;
  98. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  99. ;
  100. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  101. ;                                STATUS_NOLANGUAGE
  102. ;                                STATUS_FAILED
  103. ;
  104. ;                $($R1): Option List
  105. ;                $($R2): Option Text List
  106. ;------------------------------------------------------------------------
  107.  
  108. [ReturnOptions]
  109.     ;
  110.     ;
  111.     set Status        = STATUS_FAILED
  112.     set OptionList     = {}
  113.     set OptionTextList = {}
  114.  
  115.     ;
  116.     ; Check if the language requested is supported
  117.     ;
  118.     set LanguageList = ^(LanguagesSupported, 1)
  119.     Ifcontains(i) $($0) in $(LanguageList)
  120.         goto returnoptions
  121.     else
  122.         set Status = STATUS_NOLANGUAGE
  123.         goto finish_ReturnOptions
  124.     endif
  125.  
  126.     ;
  127.     ; form a list of all the options and another of the text representing
  128.     ;
  129.  
  130. returnoptions = +
  131.     set OptionList     = ^(Options, 0)
  132.     set OptionTextList = ^(OptionsText$($0), 1)
  133.     set Status         = STATUS_SUCCESSFUL
  134.  
  135. finish_ReturnOptions = +
  136.     Return $(Status) $(OptionList) $(OptionTextList)
  137.  
  138.  
  139. ;------------------------------------------------------------------------
  140. ; 3. InstallOption:
  141. ;
  142. ; FUNCTION:  To copy files representing Options
  143. ;            To configure the installed option
  144. ;            To update the registry for the installed option
  145. ;
  146. ; INPUT:     $($0):  Language to use
  147. ;            $($1):  OptionID to install
  148. ;            $($2):  SourceDirectory
  149. ;            $($3):  AddCopy  (YES | NO)
  150. ;            $($4):  DoCopy   (YES | NO)
  151. ;            $($5):  DoConfig (YES | NO)
  152. ;
  153. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  154. ;                            STATUS_NOLANGUAGE |
  155. ;                            STATUS_USERCANCEL |
  156. ;                            STATUS_FAILED
  157. ;------------------------------------------------------------------------
  158.  
  159. [InstallOption]
  160.  
  161.     ;
  162.     ; Set default values for
  163.     ;
  164.     set Status   = STATUS_FAILED
  165.     set DrivesToFree = {}
  166.  
  167.     ;
  168.     ; Check if NONE or UNKNOWN
  169.     ;
  170.     ifstr(i) $($1) == NONE
  171.         set Status = STATUS_SUCCESSFUL
  172.         goto finish_InstallOption
  173.     else-ifstr(i) $($1) == UNKNOWN
  174.         set Status = STATUS_SUCCESSFUL
  175.         goto finish_InstallOption
  176.     endif
  177.  
  178.     ;
  179.     ; extract parameters
  180.     ;
  181.     set Option   = $($1)
  182.     set SrcDir   = $($2)
  183.     set AddCopy  = $($3)
  184.     set DoCopy   = $($4)
  185.     set DoConfig = $($5)
  186.  
  187.     ;
  188.     ; Check if the language requested is supported
  189.     ;
  190.     set LanguageList = ^(LanguagesSupported, 1)
  191.     Ifcontains(i) $($0) in $(LanguageList)
  192.     else
  193.         set Status = STATUS_NOLANGUAGE
  194.         goto finish_InstallOption
  195.     endif
  196.     read-syms Strings$($0)
  197.  
  198.     ;
  199.     ; check to see if Option is supported.
  200.     ;
  201.  
  202.     set OptionList = ^(Options, 0)
  203.     ifcontains $(Option) in $(OptionList)
  204.     else
  205.         goto finish_InstallOption
  206.     endif
  207.     set OptionList = ""
  208.  
  209.     ;
  210.     ; Option has been defined already
  211.     ;
  212.  
  213.     set ClassDriver      =   #(Options,      $(Option),      1)
  214.     set Type             = $(#(ClassDrivers, $(ClassDriver), 1))
  215.     set Group            =   #(ClassDrivers, $(ClassDriver), 2)
  216.     set ErrorControl     = $(#(ClassDrivers, $(ClassDriver), 3))
  217.     set Dependencies     =   #(ClassDrivers, $(ClassDriver), 4)
  218.     set EventMessageFile =   #(ClassDrivers, $(ClassDriver), 5)
  219.     set TypesSupported   =   #(ClassDrivers, $(ClassDriver), 6)
  220.  
  221. installtheoption = +
  222.  
  223.     ;
  224.     ; Code to add files to copy list
  225.     ;
  226.  
  227.     ifstr(i) $(AddCopy) == "YES"
  228.         set DoActualCopy = NO
  229.         set FileToCheck = #(Files-TapeClassDrivers, $(ClassDriver), 2)
  230.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
  231.         ifstr(i) $(STATUS) == NO
  232.             set DoActualCopy = YES
  233.         endif
  234.  
  235.         ifstr(i) $(DoActualCopy) == NO
  236.             shell "subroutn.inf" DriversExist $($0) $(String1)
  237.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  238.                 Debug-Output "TAPE.INF: shelling DriversExist failed"
  239.                 goto finish_InstallOption
  240.             endif
  241.  
  242.             ifstr(i) $($R0) == STATUS_CURRENT
  243.             else-ifstr(i) $($R0) == STATUS_NEW
  244.                 set DoActualCopy = YES
  245.             else-ifstr(i) $($R0) == STATUS_USERCANCEL
  246.                 Debug-Output "TAPE.INF: User cancelled Tape installation"
  247.                 goto finish_InstallOption
  248.             else
  249.                 Debug-Output "TAPE.INF: Error reported in DriversExist routine in SUBROUTN.INF"
  250.                 goto finish_InstallOption
  251.             endif
  252.         endif
  253.  
  254.         ifstr(i) $(DoActualCopy) == YES
  255.  
  256.             shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
  257.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  258.                 Debug-Output "TAPE.INF: shelling DoAskSource failed"
  259.                 goto finish_InstallOption
  260.             endif
  261.  
  262.             ifstr(i) $($R0) == STATUS_SUCCESSFUL
  263.                 set SrcDir = $($R1)
  264.                 ifstr(i) $($R2) != ""
  265.                     set DrivesToFree = >($(DrivesToFree), $($R2))
  266.                 endif
  267.             else
  268.                 Debug-Output "TAPE.INF: User cancelled asking source."
  269.                 goto finish_InstallOption
  270.             endif
  271.  
  272.             install Install-AddCopyOption
  273.             ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
  274.                 Debug-Output "Adding mouse files to copy list failed"
  275.                 goto finish_InstallOption
  276.             endif
  277.         else
  278.             set DoCopy = NO
  279.         endif
  280.  
  281.     endif
  282.  
  283.     ifstr(i) $(DoCopy) == "YES"
  284.         read-syms ProgressCopy$($0)
  285.         install Install-DoCopyOption
  286.         ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  287.             Debug-Output "Copying files failed"
  288.             goto finish_InstallOption
  289.         else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  290.             set Status = STATUS_USERCANCEL
  291.             goto finish_InstallOption
  292.         endif
  293.     endif
  294.  
  295.     ifstr(i) $(DoConfig) == "YES"
  296.         ;
  297.         ; first run a privilege check on modifying the setup node
  298.         ;
  299.  
  300.         shell "registry.inf" CheckSetupModify
  301.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  302.             goto finish_InstallOption
  303.         endif
  304.  
  305.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  306.             goto finish_InstallOption
  307.         endif
  308.  
  309.         ;
  310.         ; then make a new tape entry, the entry is created automatically
  311.         ; enabled
  312.         ;
  313.  
  314.         set ServiceNode      = $(ClassDriver)
  315.         set ServiceBinary = %SystemRoot%\System32\drivers\#(Files-TapeClassDrivers, $(ClassDriver), 2)
  316.  
  317.         set ServicesValues   = { +
  318.                 {Type,           0, $(!REG_VT_DWORD),     $(Type)                  }, +
  319.                 {Start,          0, $(!REG_VT_DWORD),     $(!SERVICE_SYSTEM_START) }, +
  320.                 {Group,          0, $(!REG_VT_SZ),        $(Group)                 }, +
  321.                 {ErrorControl,   0, $(!REG_VT_DWORD),     $(ErrorControl)          }, +
  322.                 {Dependencies,   0, $(!REG_VT_MULTI_SZ),  {$(Dependencies)}        }, +
  323.                 {BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary)         }  +
  324.                 }
  325.         set ParametersValues = ""
  326.         set DeviceValues     = {}
  327.         set EventLogValues   = { +
  328.                 {EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
  329.                 {TypesSupported,   0, $(!REG_VT_DWORD),     $(TypesSupported)   }  +
  330.                 }
  331.  
  332.  
  333.         shell "registry.inf"  MakeServicesEntry $(ServiceNode)      +
  334.                                                 $(ServicesValues)   +
  335.                                                 $(ParametersValues) +
  336.                                                 $(DeviceValues)     +
  337.                                                 $(EventLogValues)   +
  338.                                                 Parameters
  339.  
  340.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  341.             Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
  342.             goto finish_InstallOption
  343.         endif
  344.  
  345.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  346.             Debug-Output "MakeServicesEntry failed for tape"
  347.             goto finish_InstallOption
  348.         endif
  349.  
  350.     endif
  351.  
  352.     set Status = STATUS_SUCCESSFUL
  353. finish_InstallOption = +
  354.     ForListDo $(DrivesToFree)
  355.         LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
  356.     EndForListDo
  357.  
  358.     Return $(Status)
  359.  
  360.  
  361. [Install-AddCopyOption]
  362.  
  363.     ;
  364.     ; Add the files to the copy list
  365.     ;
  366.     AddSectionKeyFileToCopyList   Files-TapeClassDrivers         +
  367.                                   $(ClassDriver)                 +
  368.                                   $(SrcDir)                      +
  369.                                   $(!STF_WINDOWSSYSPATH)\drivers
  370.  
  371.     exit
  372.  
  373.  
  374. [Install-DoCopyOption]
  375.  
  376.     ;
  377.     ; Copy files in the copy list
  378.     ;
  379.     CopyFilesInCopyList
  380.     exit
  381.  
  382.  
  383. ;-------------------------------------------------------------------------
  384. ; 4. DeInstallOption:
  385. ;
  386. ; FUNCTION:  To remove files representing Option
  387. ;            To remove the registry entry corresponding to the Option
  388. ;
  389. ; INPUT:     $($0):  Language to use
  390. ;            $($1):  OptionID to install
  391. ;
  392. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  393. ;                            STATUS_NOLANGUAGE |
  394. ;                            STATUS_USERCANCEL |
  395. ;                            STATUS_FAILED
  396. ;-------------------------------------------------------------------------
  397. [DeInstallOption]
  398.     ;
  399.     ; Set default values for
  400.     ;
  401.     set Status   = STATUS_FAILED
  402.  
  403.     ;
  404.     ; extract parameters
  405.     ;
  406.     set Option   = $($1)
  407.  
  408.     ;
  409.     ; Check if the language requested is supported
  410.     ;
  411.     set LanguageList = ^(LanguagesSupported, 1)
  412.     Ifcontains(i) $($0) in $(LanguageList)
  413.     else
  414.         set Status = STATUS_NOLANGUAGE
  415.         goto finish_DeInstallOption
  416.     endif
  417.     read-syms Strings$($0)
  418.  
  419.     ;
  420.     ; check to see if Option is supported.
  421.     ;
  422.  
  423.     set OptionList = ^(Options, 0)
  424.     ifcontains $(Option) in $(OptionList)
  425.     else
  426.         goto finish_DeInstallOption
  427.     endif
  428.     set OptionList = ""
  429.  
  430.     ;
  431.     ; fetch details about option
  432.     ;
  433.  
  434.     set ClassDriver = #(Options, $(Option), 1)
  435.     set ClassFile   = #(Files-TapeClassDrivers, $(ClassDriver), 2)
  436.     set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(ClassFile)
  437.  
  438.     ;
  439.     ; disable the registry entry
  440.     ;
  441.  
  442.     shell "registry.inf" RemoveServicesEntry $(ClassDriver)
  443.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  444.         Debug-Output "TAPE.INF: Failed to shell RemoveServicesEntry"
  445.         goto finish_DeInstallOption
  446.     endif
  447.  
  448.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  449.         Debug-Output "TAPE.INF: Failed to disable services entry"
  450.         goto finish_DeInstallOption
  451.     endif
  452.  
  453.     ;
  454.     ; we won't remove the file because we can only do so during the next boot.
  455.     ; if the user chooses to reinstall the same driver during this boot
  456.     ; he will still end up deleting the driver on next boot. if the file
  457.     ; should be deleted a warning should be put up saying that the user should
  458.     ; not try to reinstall the driver during this boot
  459.     ;
  460.     ;    AddFileToDeleteList $(FilePath)
  461.  
  462.  
  463.     set Status = STATUS_SUCCESSFUL
  464.  
  465. finish_DeInstallOption =+
  466.     return $(Status)
  467.  
  468.  
  469. ;-------------------------------------------------------------------------
  470. ; 5. GetInstalledOptions:
  471. ;
  472. ; FUNCTION:  To find out the list of options which are installed
  473. ;
  474. ; INPUT:     $($0): Language to Use
  475. ;
  476. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  477. ;                            STATUS_FAILED
  478. ;
  479. ;            $($R1): List of options installed
  480. ;            $($R2): Option installed Text List
  481. ;-------------------------------------------------------------------------
  482. [GetInstalledOptions]
  483.     set Status = STATUS_FAILED
  484.     set InstalledOptions = {}
  485.     set InstalledOptionsText = {}
  486.  
  487.     ;
  488.     ; Check if the language requested is supported
  489.     ;
  490.     set LanguageList = ^(LanguagesSupported, 1)
  491.     Ifcontains(i) $($0) in $(LanguageList)
  492.     else
  493.         set Status = STATUS_NOLANGUAGE
  494.         goto finish_GetInstalledOptions
  495.     endif
  496.  
  497.     set OptionList = ^(Options, 0)
  498.     ForListDo $(OptionList)
  499.         set ClassDriver = #(Options, $($), 1)
  500.         set ClassFile   = #(Files-TapeClassDrivers, $(ClassDriver), 2)
  501.         set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(ClassFile)
  502.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
  503.         ifstr(i) $(STATUS) == "YES"
  504.             shell "registry.inf" GetServicesEntryStart $(ClassDriver)
  505.             ifint $($ShellCode) == $(!SHELL_CODE_OK)
  506.                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
  507.                     ifstr(i) $($R1) != $(!SERVICE_DISABLED)
  508.                         set OptionText = #(OptionsText$($0), $($), 1)
  509.                         set InstalledOptions     = >($(InstalledOptions), $($))
  510.                         set InstalledOptionsText = >($(InstalledOptionsText), $(OptionText))
  511.                     endif
  512.                 endif
  513.             endif
  514.         endif
  515.     EndForListDo
  516.     set Status = STATUS_SUCCESSFUL
  517. finish_GetInstalledOptions =+
  518.     Return $(Status) $(InstalledOptions) $(InstalledOptionsText)
  519.  
  520. ;**************************************************************************
  521. ; PROGRESS GUAGE VARIABLES
  522. ;**************************************************************************
  523.  
  524. [ProgressCopyENG]
  525.     ProCaption   = "Windows NT Setup"
  526.     ProCancel    = "Cancel"
  527.     ProCancelMsg = "Windows NT is not correcly installed.  Are you sure you want "+
  528.                    "to cancel copying files?"
  529.     ProCancelCap = "Setup Message"
  530.     ProText1     = "Copying:"
  531.     ProText2     = "To:"
  532.  
  533. [StringsENG]
  534.     String1 = "Tape Device"
  535.     String2 = "Please enter the full path to the OEM Tape Device "+
  536.               "files.  Then choose Continue."
  537.  
  538. [Source Media Descriptions]
  539.     1  = "OEM DISK (TAPE)"  , TAGFILE = SANKYO
  540.  
  541. [Files-TapeClassDrivers]
  542. sankqic = 1,sankqic.sys , SIZE=37376
  543.